package com.ouc.openplatform.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

/**
 * 处理json数据格式的工具类
 */
public class JsonUtils {
	/**
	 * 将数组转换成String类型的JSON数据格式
	 * 
	 * @param objects
	 * @return
	 */
	public static String array2json(Object[] objects){
		
		JSONArray jsonArray = JSONArray.fromObject(objects);
		return jsonArray.toString();
		
	}
	
	/**
	 * 将list集合转换成String类型的JSON数据格式
	 * 
	 * @param list
	 * @return
	 */
	public static String list2json(List<?> list){
		
		JSONArray jsonArray = JSONArray.fromObject(list);
		return jsonArray.toString();
		
	}
	
	/**
	 * 将map集合转换成String类型的JSON数据格式
	 * 
	 * @param map
	 * @return
	 */
	public static String map2json(Map<?, ?> map){
		
		JSONObject jsonObject = JSONObject.fromObject(map);
		return jsonObject.toString();
		
	}
	
	/**
	 * 将Object对象转换成String类型的JSON数据格式
	 * 
	 * @param object
	 * @return
	 */
	public static String object2json(Object object){
		
		JSONObject jsonObject = JSONObject.fromObject(object);
		return jsonObject.toString();
		
	}
	
	/**
	 * 将XML数据格式转换成String类型的JSON数据格式
	 * 
	 * @param xml
	 * @return
	 */
	public static String xml2json(String xml){
		JSONArray jsonArray = (JSONArray) new XMLSerializer().read(xml);
		return jsonArray.toString();
	}
	
	/**
	 * 将JSON串转换为Map对象
	 * 
	 * @param jsonStr
	 *          JSON字符串{"name1":"value1","name2":"value2"}
	 * @return Map对象
	 */
	public static Map Json2Map(String jsonStr) {
		return (Map) JSONObject.toBean(JSONObject.fromObject(jsonStr), Map.class);
	}
	
	//将json转换为list
	public static List Json2List(String jsonStr) {
		// JSONObject obj = JSONObject.fromObject(jsonStr);
		JSONArray jsonArray = JSONArray.fromObject(jsonStr);
		if (jsonArray != null && !jsonArray.isEmpty()) {
			List list = new ArrayList();
			for (int i = 0, len = jsonArray.size(); i < len; i++) {
				list.add(JSONObject.toBean(jsonArray.getJSONObject(i), Map.class));
			}
			return list;
		}
		return null;
	}
	
}
